﻿namespace PnFramework
{
    /*
     大家好 我是猫叔 上一期我们完成了弹幕互动的基本思路，是时候更新一波代码了！
     为了保证即插即用 我们将以模块化的思路去构建 我们引入一个单例的概念！
     所谓单例就是类创建自己 同时确保只有单个对象被创建和使用！
     大致的思路就是提供一个自身类型的静态字段和静态属性，并在调用时通过确保对象是否存在来保证唯一性！
     因为单例模式在游戏开发中十分常用，可以利用泛型来构建一个单例基类来简化使用！【讲解】
    */
    /// <summary>
    /// 单例基类
    /// </summary>
    public abstract class Singleton<T> where T : new()
    {
        private static T mInstance;

        public static T Instance
        {
            get
            {
                //如果为空 就new一个自己 否则直接返回
                if (mInstance == null) mInstance = new T();
                return mInstance;
            }
        }
    }
}